using System;
using Gtk;
using Gnome;
using GtkSharp;
using DiaCanvas;
using System.Runtime.InteropServices;


public class MainWindow: Gtk.Window
{
	protected Gtk.Button btn_inicio;
	protected Gtk.Notebook ntb_canvas;
	DiaCanvas.Canvas diagcanvas = new DiaCanvas.Canvas();
	protected Gtk.Button btn_proceso;
	protected Gtk.Button btn_flujo;
	protected Gtk.Button btn_entrada;
	protected Gtk.Button btn_decision;
	protected Gtk.Button btn_salida;
	
	    
    bool _btnpresionado = false;
    Figura f;
    int px,py;
    DiaCanvas.FiguraType TipoFig;
	
	public MainWindow (): base ("")
	{
		Stetic.Gui.Build (this, typeof(MainWindow));
		
		
		this.ntb_canvas.RemovePage(0);
		ntb_canvas.Add(diagcanvas);
		diagcanvas.Show();
		diagcanvas.ButtonPressEvent += new ButtonPressEventHandler(click_encanvas);
		//diagcanvas
		btn_inicio.Clicked += new EventHandler(click_inicio);
		btn_proceso.Clicked += new EventHandler(click_proceso);
		btn_entrada.Clicked += new EventHandler(click_entrada);
		btn_decision.Clicked += new EventHandler(click_decision);
	}
	
	void click_encanvas (object o, ButtonPressEventArgs args)
	{  		
  		
  		
  			switch (args.Event.Button)
  			{
  				case 1:
  					if(_btnpresionado == true) 
  					{	  					
		  				switch(TipoFig)
		  				{
		  				case DiaCanvas.FiguraType.Circulo:
			  				
			  				diagcanvas.GetPointer(out px,out py);
			  				f = (Figura) new Circulo(new Gdk.Point(px-131,py-62),40,this.diagcanvas);
			  				diagcanvas.AddFigure(f);
			  				_btnpresionado = false;
			  			
			  				break;
			  				
			  			case DiaCanvas.FiguraType.Rectangulo:
			  				
			  				diagcanvas.GetPointer(out px,out py);
			  				f = (Figura) new Rectangulo(new Gdk.Point(px-131,py-62),20,40,this.diagcanvas);
			  				diagcanvas.AddFigure(f);
			  				_btnpresionado = false;
			  				
			  				break;
			  			
			  			}	
		  			}
		  		break;
  				case 3:
  					
  						Menu popupMenu = new Menu(); // crea el menú principal
                        // crea un elemento de menú sin ninguna imagen
      		            ImageMenuItem menuPopup1 = new ImageMenuItem ("Propiedades");
                        // crea una imagen para el elemento de menú
      					popupMenu.Add(menuPopup1); // agrega el elementó al menú principal
                       // capturamos el evento cuando el usuario hace click sobre el ícono
      		           //menuPopup1.Activated += new EventHandler(this.OnPopupClick);
					   popupMenu.ShowAll(); // mostramos todo
                       // cuando el usuario hace click derecho, mostramos el menú
      				  popupMenu.Popup(null, null, null, IntPtr.Zero, args.Event.Button, args.Event.Time);
  					  Console.Write("menu mostrado");
  				break;
  			}	
  	
  		        
	}
	void click_inicio (object o, EventArgs args)
	{
  		TipoFig = DiaCanvas.FiguraType.Circulo;  		
  		_btnpresionado = true;
        
	}
	void click_proceso (object o, EventArgs args)
	{
  		TipoFig = DiaCanvas.FiguraType.Rectangulo;  		
  		_btnpresionado = true;
	}
	void click_decision (object o, EventArgs args)
	{
  		TipoFig = DiaCanvas.FiguraType.Rombo;  		
  		_btnpresionado = true;
        
	}
	void click_entrada (object o, EventArgs args)
	{
  		TipoFig = DiaCanvas.FiguraType.Romboide;  		
  		_btnpresionado = true;
        
	}
	protected void OnDeleteEvent (object sender, DeleteEventArgs a)
	{
		Application.Quit ();
		a.RetVal = true;
	}
}